package com.sdonkey.score.service;

import com.sdonkey.score.bean.UserLoginInfoBean;
import com.sdonkey.score.dto.UserInfoDto;

import javax.servlet.http.HttpServletRequest;

/**
 * @author ZhaoShihao
 * @version 1.0
 */
public interface IJedisService {
    /**
     * 将用户登录信息存入redis
     *
     * @param id           用户ID
     * @param userInfoBean 用户登录信息
     * @param flag         用户是否修改了密码
     * @return 操作是否成功
     */
    String putUserToRedis(String id, UserLoginInfoBean userInfoBean, Integer flag);

    /**
     * 从redis中取出用户登录信息
     *
     * @param request
     * @return 用户的信息（密码为密文保存）
     */
    UserLoginInfoBean getUserByRedis(HttpServletRequest request);

    /**
     * 将用户个人id存入redis
     *
     * @param userId
     * @param token
     * @return
     */
    int setUserByToken(Integer userId, String token);

    /**
     * 从redis中取出用户个人信息
     *
     * @param token
     * @return
     */
    UserInfoDto getUserByToken(String token);

    /**
     * 清除登录用户
     *
     * @param token 用户令牌
     * @return
     */
    Long clearUserByToken(String token);

    /**
     * 获取用户输错支付密码的次数
     *
     * @param userId 用户id
     * @return 用户输错支付密码的次数
     */
    int getPayPswError(Integer userId);

    /**
     * 用户密码错误计数
     *
     * @param userId 操作用户id
     * @param isTrue 用户本次密码输入是否正确
     * @return 0：未找到操作用户 1：已计数 -1：操作异常
     */
    Long setPayPswError(Integer userId, boolean isTrue);

    /**
     * 获取在线用户数
     *
     * @return
     */
    Long getUserCount();
}
